package main

import (
	"fmt"
	"reflect"
)

/*
go的反射会使用reflect包
*/
type Student struct {
	name  string
	age   int
	score float32
}

func main() {
	var stu = Student{"张三", 19, 80.0}
	//得到类型的元数据,通过t我们能获取类型定义里面的所有元素
	t := reflect.TypeOf(stu)
	//得到实际的值，通过v我们获取存储在里面的值，还可以去改变值
	v := reflect.ValueOf(stu)

	fmt.Println(t)
	fmt.Println(v)

	//获取定义在struct里面的标签
	tag := t.Elem().Field(0).Tag
	//获取存储在第一个字段里面的值
	name := v.Elem().Field(0).String()
	fmt.Println(tag)
	fmt.Println(name)

}
